#include <iostream>
#include <vector>
#include <queue>

using namespace std;

struct node
{
    int a, b, c;
    // //以 b 为基准，定义大根堆
    // bool operator < (const node& x) const
    // {
    //     return b < x.b;
    // }
    
    // 以 b 为基础，定义小根堆
    bool operator < (const node& x) const
    {
        return b > x.b;
    }
};
void test()
{
    priority_queue<node> heap;
    for(int i = 1; i <= 10; i++)
    {
        heap.push({i, i + 1, i * 2});
    }
    while(heap.size())
    {
        auto [a, b, c] = heap.top();
        heap.pop();
        cout << a << " " << b << " " c << endl;
    }
}
int main()
{
    test();
    return 0;
}